home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / COMMADIO / FSTHST21.LZH / FASTHST.PAS < prev    next >
Pascal/Delphi Source File  |  1989-09-27  |  5KB  |  228 lines

  1.  
  2. (*
  3.  * FSTHST21 - Sets up USR HST Modem for optimum speed
  4.  * By Joseph Sheppard, The Ledge PCBoard (818) 352-3620
  5.  *
  6.  *
  7.  * Uses routines from Prokit:
  8.  * (C) 1988 Samuel H. Smith, 22-Feb-88 (rev. 12-01-88)
  9.  *
  10.  *)
  11.  
  12. (* ------------------------------------------------------------ *)
  13.  
  14. uses dos,minicrt,tools,proroot,prodata;
  15.  
  16. const
  17.  
  18.    initial_timeout = 3;
  19.    timeout = 3;
  20.    max_trys = 5;
  21.  
  22. var
  23.    linenum:  integer;
  24.    inbuf:    string;
  25.    lastln:   string;
  26.    try:      integer;
  27.    ans:      string;
  28.    dc:       string;
  29.    sp:       string;
  30.  
  31. (* ---------------------------------------------------------------- *)
  32.  
  33.    procedure xmit(s: string);
  34.    var
  35.      i: integer;
  36.    begin
  37.      for i := 1 to length(s) do
  38.      INTR_transmit_data(s[i]);
  39.  
  40.      INTR_flush_com;
  41.    end;
  42.  
  43. (* ---------------------------------------------------------------- *)
  44.  
  45.    procedure recv;
  46.    var
  47.       c:   char;
  48.    begin
  49.  
  50.       repeat
  51.          if INTR_receive_ready then
  52.          c := INTR_receive_data
  53.          else
  54.          c := #255;
  55.  
  56.          case c of
  57.             #255: exit;
  58.  
  59.             ' '..'~':
  60.             inbuf := inbuf + c;
  61.             ^J:
  62.                 if length(inbuf) > 1 then
  63.                 begin
  64.                 lastln := inbuf;
  65.                 inbuf := '';
  66.                 end;
  67.          end;
  68.       write(c);
  69.       until true=false;
  70.  
  71.    end;
  72.  
  73. (* ---------------------------------------------------------------- *)
  74. procedure get_user_settings;
  75.  
  76. begin
  77.  
  78.    clrscr;
  79.    writeln('FASTHST V2.1 By Joseph Sheppard, The Ledge PCBoard '+
  80.    '818-352-3620');
  81.    writeln;
  82.    writeln('Be sure that your dipswitches are set as indicated below: ');
  83.    writeln;
  84.    writeln('1   2   3   4   5   6   7   8   9   10');
  85.    writeln('--  --  --  --  --  --  --  --  --  --');
  86.    writeln('UP  UP  DN  DN  DN  UP  UP  DN  UP  UP');
  87.    writeln;
  88.    write('Press any key to continue or Q to Quit ? ');
  89.    readln(ans);
  90.    stoupper(ans);
  91.    if ans[1]='Q' then halt;
  92.  
  93.   clrscr;
  94.   writeln('If data compression is enabled, text downloads will be');
  95.   writeln('faster, but compressed files (ZIP, ARC, LZH, etc) will be');
  96.   writeln('slower.  If you will be using your modem mainly for transfering');
  97.   writeln('compressed files, your performance will be better of you disable');
  98.   writeln('the data compression feature');
  99.   writeln;
  100.   write('Disable Data Compression (MNP Level 5) Y/N ? ');
  101.   readln(ans);
  102.   stoupper(ans);
  103.   if ans[1]='N' then dc:='&K1';
  104.   clrscr;
  105.   writeln('FASTHST sets up your modem to send detailed messages to your ');
  106.   writeln('terminal program regarding line status (CONNECT, RING, NO CARRIER ');
  107.   writeln('NO DIAL TONE, BUSY, NO ANSWER, RINGING, VOICE). You may want to ');
  108.   writeln('turn your modem speaker off all the time and monitor the status ');
  109.   writeln('of your connection with these silent messages');
  110.   writeln;
  111.   write('Do you want your modem speaker to always be off? ');
  112.   readln(ans);
  113.   stoupper(ans);
  114.   if ans[1]='N' then sp:='M1';
  115.  
  116.  
  117.   end;
  118.  
  119. (* ---------------------------------------------------------------- *)
  120.  
  121. (*
  122.  * main program
  123.  *
  124.  *)
  125.  
  126. var
  127.    c: char;
  128.    port: string;
  129.    time: real;
  130.  
  131. begin
  132.  
  133.    if paramcount <> 1 then
  134.    begin
  135.       writeln('Usage:    FASTHST PORT');
  136.       writeln('Example:  FASTHST 1');
  137.       halt;
  138.    end;
  139.  
  140.    dc:='&K0';
  141.    sp:='M0';
  142.    get_user_settings;
  143.    clrscr;
  144.  
  145. (* install interrupt handlers *)
  146.    local := false;
  147.    port := paramstr(1);
  148.    INTR_init_com(ord(port[1])-ord('1'));
  149.  
  150.    c := '?';
  151.    inbuf := '';
  152.    lastln := '<timeout>';
  153.    time := get_time-timeout+initial_timeout;
  154.    try := 1;
  155.  
  156.    repeat
  157.       recv;
  158.  
  159.       if {(lastln = '') and} (get_time > time+timeout) then
  160.       begin
  161.          lastln := '<timeout>';
  162.       end;
  163.  
  164.       if (lastln = '<timeout>') or
  165.          (lastln = 'RING') or
  166.          (lastln = 'NO CARRIER') or
  167.          (lastln = 'NO DIAL TONE') then
  168.       begin
  169.          inc(try);
  170.          if try > max_trys then
  171.          begin
  172.             writeln;
  173.             writeln;
  174.             writeln('modem is not responding! Process aborted');
  175.             writeln;
  176.             INTR_uninit_com;
  177.             halt;
  178.          end;
  179.  
  180.          INTR_lower_dtr;
  181.          delay(500);
  182.          INTR_raise_dtr;
  183.          delay(500);
  184.          writeln;
  185.          writeln('Resetting modem to factory settings...');
  186.          writeln;
  187.          writeln('AT&F');
  188.          xmit('AT&F'^M);
  189.          xmit('AT&W'^M);
  190.          delay(500);
  191.          writeln;
  192.          writeln('Changing NRAM settings...');
  193.          writeln;
  194.          writeln('ATS7=60E0'+sp+'X6');
  195.          writeln;
  196.          xmit('ATS7=60E0'+sp+'X6'^M);
  197.          delay(500);
  198.          writeln('AT&H3&R2&S1&B1'+dc+'&W');
  199.          xmit('AT&H3&R2&S1&B1'+dc+'&W'^M);
  200.          delay(500);
  201.          writeln;
  202.          lastln := '';
  203.          time := get_time;
  204.       end;
  205.  
  206.       if keypressed then
  207.       begin
  208.          c := readkey;
  209.          if c = #27 then
  210.          begin
  211.             writeln('<user abort>');
  212.             INTR_uninit_com;
  213.             halt(0);
  214.          end;
  215.       end;
  216.    until lastln = 'OK';
  217.    writeln;
  218.    writeln('modem setup successful!');
  219.    writeln;
  220.    writeln('Change the initialization string for your terminal'+
  221.    ' program to ATH0');
  222.  
  223.    INTR_uninit_com;
  224.    halt;
  225. end.
  226.  
  227. 
  228.